package com.uidp.security;

import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

/**
 * Поради изоставането на viewID-то, на практика viewRoot на новата страница е
 * налично, чак след invoke application на страницата, затова слагаме още един
 * филтър който да избегне ситуациите, в които навигираме към нещо което не
 * можем да достъпим и разбираме това, чак след като натиснем нещо на въпросната
 * страница.
 * 
 *
 */
public class SecurityUserFilterInvoke extends AccessFilter implements PhaseListener {

	/** */
	private static final long serialVersionUID = 7797341561813929316L;

	/**
	 * @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
	 */
	public void afterPhase(PhaseEvent arg0) {
		Redirect state = check(arg0);

		if (!state.isOK()) {
			state.redirect(arg0.getFacesContext());
		}
	}

	/**
	 * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
	 */
	public void beforePhase(PhaseEvent arg0) {
		// нищо не правим
	}

	/**
	 * Фазата на извикване на бизнес слоя.
	 * 
	 * @see javax.faces.event.PhaseListener#getPhaseId()
	 */
	public PhaseId getPhaseId() {
		return PhaseId.INVOKE_APPLICATION;
	}

}
